//@author A0094511L Lu Si Hong
///@class GUI
///@Description This class is the brain of the logic class. It calls on tokenizer to
///				split the input string up, and calls the respective function from EntryManager to
///				execute that command


#ifndef BOT_H
#define BOT_H
#include <Qtcore\Qdatetime.h>
#include <string>
#include <Entry.h>
#include <EntryManager.h>
#include <Task.h>
#include <Event.h>
#include "CommonUtils.h"
#include "Tokeniser.h"
#include "EntriesManager.h"

class Bot// : QObject
{
	friend class GUI;
	friend class Model;
	//Q_OBJECT
	Bot();
	static Bot* _instance;
public:
	static Bot* getInstance();
	~Bot();

	//@brief This function executes the user command and does the resective changes to the file
	//@post  This function returns a structure of strings
	CommonUtils::ReturnStatus executeCommand(string userCommand);

	vector<Entry*> getVector();

	void editFromGui(int, int, QVariant);
	CommonUtils::ReturnCount getCount();
private:
	EntriesManager* _allEntries;
	CommonUtils::ReturnStatus getDefaultView();

/*signals:
	void updateEntry(const QDate&); */

};

#endif // BOT_H
